<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AceButton: /home/brian/src/AceButton/src/ace_button/ButtonConfig.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">AceButton
   &#160;<span id="projectnumber">1.10.0</span>
   </div>
   <div id="projectbrief">An adjustable, compact, event-driven button library for Arduino.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_ebbe9b537c0e01d975153fa119b09658.html">ace_button</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">ButtonConfig.h</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">MIT License</span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">Copyright (c) 2018 Brian T. Park</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">of this software and associated documentation files (the &quot;Software&quot;), to deal</span></div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">in the Software without restriction, including without limitation the rights</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">copies of the Software, and to permit persons to whom the Software is</span></div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">The above copyright notice and this permission notice shall be included in all</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment">copies or substantial portions of the Software.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment">THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment">IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment">AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment">LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment">OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment">SOFTWARE.</span></div>
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#ifndef ACE_BUTTON_BUTTON_CONFIG_H</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#define ACE_BUTTON_BUTTON_CONFIG_H</span></div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160; </div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &lt;Arduino.h&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &quot;IEventHandler.h&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">// https://stackoverflow.com/questions/295120</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#if defined(__GNUC__) || defined(__clang__)</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">  #define ACE_BUTTON_DEPRECATED __attribute__((deprecated))</span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#elif defined(_MSC_VER)</span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">  #define ACE_BUTTON_DEPRECATED __declspec(deprecated)</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">  #pragma message(&quot;WARNING: Implement ACE_BUTTON_DEPRECATED for this compiler&quot;</span>)</div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">  #define ACE_BUTTON_DEPRECATED</span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="keyword">namespace </span>ace_button {</div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160; </div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="keyword">class </span>AceButton;</div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160; </div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html">   66</a></span>&#160;<span class="keyword">class </span><a class="code" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a> {</div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;  <span class="keyword">public</span>:</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    <span class="comment">// Various timing constants, in milliseconds.</span></div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    <span class="comment">//</span></div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <span class="comment">// Note that the timing constants are stored as uint16_t (2</span></div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <span class="comment">// bytes) instead of unsigned long (4 bytes) which is the type returned by</span></div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="comment">// the millis() system method. It turns out that we can store and perform</span></div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <span class="comment">// all timing calculations using uint16_t without ill effect, as long as the</span></div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    <span class="comment">// polling of AceButton::check() happens more frequently than the rollover</span></div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <span class="comment">// time of a uint16_t (i.e. 65.536 seconds) and certain precautions (e.g.</span></div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <span class="comment">// AceButton::checkOrphanedClick()) are taken before a uint16_t rollover</span></div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="comment">// happens. In theory, these additional precautions would be needed even if</span></div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="comment">// an &#39;unsigned long&#39; is used but almost no one does them because they</span></div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="comment">// assume that their code won&#39;t be running continuously for the rollover</span></div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="comment">// time of an &#39;unsigned long&#39; (i.e. 49.7 days).</span></div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a8fbe63588107a1375d05911d27df3ad8">   83</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#a8fbe63588107a1375d05911d27df3ad8">kDebounceDelay</a> = 20;</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a5691e38564dae63592d22abf74fb15f3">   86</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#a5691e38564dae63592d22abf74fb15f3">kClickDelay</a> = 200;</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#af0a0d503f3396acef6a84aca4390fd6a">   89</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#af0a0d503f3396acef6a84aca4390fd6a">kDoubleClickDelay</a> = 400;</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160; </div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a60bf588a2c067a561887eadf18cedccd">   92</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#a60bf588a2c067a561887eadf18cedccd">kLongPressDelay</a> = 1000;</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160; </div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a3d20bc5800532085fd046fc64b80ae9f">   95</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#a3d20bc5800532085fd046fc64b80ae9f">kRepeatPressDelay</a> = 1000;</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160; </div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a218c1aa09b45ea2fe6884e3af3a18310">   98</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#a218c1aa09b45ea2fe6884e3af3a18310">kRepeatPressInterval</a> = 200;</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160; </div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a918276f7ac8cf6db59a7013c1242e848">  101</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#a918276f7ac8cf6db59a7013c1242e848">kHeartBeatInterval</a> = 5000;</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160; </div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="comment">// Various features controlled by feature flags.</span></div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">  110</a></span>&#160;    <span class="keyword">typedef</span> uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a>;</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160; </div>
<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#ac662555100416c4843c6ee5156699c56">  113</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> <a class="code" href="classace__button_1_1ButtonConfig.html#ac662555100416c4843c6ee5156699c56">kFeatureClick</a> = 0x01;</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160; </div>
<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a638943c127dd60288a83e83260825d01">  120</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> <a class="code" href="classace__button_1_1ButtonConfig.html#a638943c127dd60288a83e83260825d01">kFeatureDoubleClick</a> = 0x02;</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160; </div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a4d175560047a4ca245186fb26fa413f2">  123</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> <a class="code" href="classace__button_1_1ButtonConfig.html#a4d175560047a4ca245186fb26fa413f2">kFeatureLongPress</a> = 0x04;</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#ac9b941ca87f0eeb899ed503481439c92">  126</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> <a class="code" href="classace__button_1_1ButtonConfig.html#ac9b941ca87f0eeb899ed503481439c92">kFeatureRepeatPress</a> = 0x08;</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160; </div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a57327066d135bcc99c4a68b55fca162e">  129</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> <a class="code" href="classace__button_1_1ButtonConfig.html#a57327066d135bcc99c4a68b55fca162e">kFeatureSuppressAfterClick</a> = 0x10;</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160; </div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a7642e16b2cc8dd0136312054b1da8f9e">  136</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> <a class="code" href="classace__button_1_1ButtonConfig.html#a7642e16b2cc8dd0136312054b1da8f9e">kFeatureSuppressAfterDoubleClick</a> = 0x20;</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a15b8e90b1ffe01009a1d7dd18b5b6aae">  139</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> <a class="code" href="classace__button_1_1ButtonConfig.html#a15b8e90b1ffe01009a1d7dd18b5b6aae">kFeatureSuppressAfterLongPress</a> = 0x40;</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160; </div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a6b43b591ba53d360e787bf780af0abbc">  142</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> <a class="code" href="classace__button_1_1ButtonConfig.html#a6b43b591ba53d360e787bf780af0abbc">kFeatureSuppressAfterRepeatPress</a> = 0x80;</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160; </div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a80d621dbcf533c9bb91a111b8fec2c53">  150</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> <a class="code" href="classace__button_1_1ButtonConfig.html#a80d621dbcf533c9bb91a111b8fec2c53">kFeatureSuppressClickBeforeDoubleClick</a> = 0x100;</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160; </div>
<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#af54fa7ecae6078d9d014b7651acbddbe">  153</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> <a class="code" href="classace__button_1_1ButtonConfig.html#af54fa7ecae6078d9d014b7651acbddbe">kFeatureHeartBeat</a> = 0x200;</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160; </div>
<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#ac5a27fc7c6397ff6c5edc307988506a4">  159</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> <a class="code" href="classace__button_1_1ButtonConfig.html#ac5a27fc7c6397ff6c5edc307988506a4">kInternalFeatureIEventHandler</a> = 0x8000;</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160; </div>
<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#abfd736234ae852f22894c7aceb4e534e">  168</a></span>&#160;    <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> <a class="code" href="classace__button_1_1ButtonConfig.html#abfd736234ae852f22894c7aceb4e534e">kFeatureSuppressAll</a> = (</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        <a class="code" href="classace__button_1_1ButtonConfig.html#a57327066d135bcc99c4a68b55fca162e">kFeatureSuppressAfterClick</a></div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        | <a class="code" href="classace__button_1_1ButtonConfig.html#a7642e16b2cc8dd0136312054b1da8f9e">kFeatureSuppressAfterDoubleClick</a></div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        | <a class="code" href="classace__button_1_1ButtonConfig.html#a15b8e90b1ffe01009a1d7dd18b5b6aae">kFeatureSuppressAfterLongPress</a></div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;        | <a class="code" href="classace__button_1_1ButtonConfig.html#a6b43b591ba53d360e787bf780af0abbc">kFeatureSuppressAfterRepeatPress</a></div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;        | <a class="code" href="classace__button_1_1ButtonConfig.html#a80d621dbcf533c9bb91a111b8fec2c53">kFeatureSuppressClickBeforeDoubleClick</a>);</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160; </div>
<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">  182</a></span>&#160;    <span class="keyword">typedef</span> void (*<a class="code" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">EventHandler</a>)(<a class="code" href="classace__button_1_1AceButton.html">AceButton</a>* button, uint8_t eventType,</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        uint8_t buttonState);</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160; </div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#aa81d236e4030f4abc48eb01ae9ade202">  186</a></span>&#160;    <a class="code" href="classace__button_1_1ButtonConfig.html#aa81d236e4030f4abc48eb01ae9ade202">ButtonConfig</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160; </div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="preprocessor">    #if ! defined(ARDUINO_ARCH_AVR)</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#aa118a96cb344ada0230eb441f9729d5e">  218</a></span>&#160;      <span class="keyword">virtual</span> <a class="code" href="classace__button_1_1ButtonConfig.html#aa118a96cb344ada0230eb441f9729d5e">~ButtonConfig</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;<span class="preprocessor">    #endif</span></div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160; </div>
<div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a2866cf111973f8b1bf4ae0e7df17b6dd">  222</a></span>&#160;    uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#a2866cf111973f8b1bf4ae0e7df17b6dd">getDebounceDelay</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mDebounceDelay; }</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160; </div>
<div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a2a39fcc939e2dce12f2ddbf803747a6e">  225</a></span>&#160;    uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#a2a39fcc939e2dce12f2ddbf803747a6e">getClickDelay</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> mClickDelay; }</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160; </div>
<div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a0098549db5df3c730f64f4235845a5a5">  231</a></span>&#160;    uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#a0098549db5df3c730f64f4235845a5a5">getDoubleClickDelay</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;      <span class="keywordflow">return</span> mDoubleClickDelay;</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    }</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160; </div>
<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a3ded707bd12aaf7bbcb14e431ec77e15">  236</a></span>&#160;    uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#a3ded707bd12aaf7bbcb14e431ec77e15">getLongPressDelay</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;      <span class="keywordflow">return</span> mLongPressDelay;</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    }</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160; </div>
<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#aeca9329775d17a06433c9588fca28695">  246</a></span>&#160;    uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#aeca9329775d17a06433c9588fca28695">getRepeatPressDelay</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      <span class="keywordflow">return</span> mRepeatPressDelay;</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    }</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160; </div>
<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a5c5d86932a98f71030422ef367b57a25">  251</a></span>&#160;    uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#a5c5d86932a98f71030422ef367b57a25">getRepeatPressInterval</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;      <span class="keywordflow">return</span> mRepeatPressInterval;</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    }</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160; </div>
<div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#afd90e97a98826ca8e47933aecb8b2d08">  256</a></span>&#160;    uint16_t <a class="code" href="classace__button_1_1ButtonConfig.html#afd90e97a98826ca8e47933aecb8b2d08">getHeartBeatInterval</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;      <span class="keywordflow">return</span> mHeartBeatInterval;</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;    }</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160; </div>
<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a9860d2c8a6ab33d40ea126b02d168cab">  261</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a9860d2c8a6ab33d40ea126b02d168cab">setDebounceDelay</a>(uint16_t debounceDelay) {</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;      mDebounceDelay = debounceDelay;</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    }</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160; </div>
<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#aef65e12128997c46bc2754a988b98f14">  266</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#aef65e12128997c46bc2754a988b98f14">setClickDelay</a>(uint16_t clickDelay) {</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;      mClickDelay = clickDelay;</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    }</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160; </div>
<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a367a809017e1d633a5cf6b117981d579">  271</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a367a809017e1d633a5cf6b117981d579">setDoubleClickDelay</a>(uint16_t doubleClickDelay) {</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;      mDoubleClickDelay = doubleClickDelay;</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    }</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160; </div>
<div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a7d90d39aeddacb5abc9d8741611d7c4a">  276</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a7d90d39aeddacb5abc9d8741611d7c4a">setLongPressDelay</a>(uint16_t longPressDelay) {</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;      mLongPressDelay = longPressDelay;</div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    }</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160; </div>
<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#af813c969eddd884e9fa83b334a59a0a5">  281</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#af813c969eddd884e9fa83b334a59a0a5">setRepeatPressDelay</a>(uint16_t repeatPressDelay) {</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;      mRepeatPressDelay = repeatPressDelay;</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    }</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160; </div>
<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#aa1b1217e0042512fc8d9b6544536aed3">  286</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#aa1b1217e0042512fc8d9b6544536aed3">setRepeatPressInterval</a>(uint16_t repeatPressInterval) {</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;      mRepeatPressInterval = repeatPressInterval;</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    }</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160; </div>
<div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a0c21a9b859c82c78581b340f2de864d5">  291</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a0c21a9b859c82c78581b340f2de864d5">setHeartBeatInterval</a>(uint16_t heartBeatInterval) {</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;      mHeartBeatInterval = heartBeatInterval;</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    }</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160; </div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    <span class="comment">// The getClock() and readButton() are external dependencies that normally</span></div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;    <span class="comment">// would be injected using separate classes, but in the interest of saving</span></div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    <span class="comment">// RAM in an embedded environment, we expose them in this class instead.</span></div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160; </div>
<div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a440271e22d5e7e161cdcb3b73f092111">  307</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a440271e22d5e7e161cdcb3b73f092111">getClock</a>() { <span class="keywordflow">return</span> millis(); }</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160; </div>
<div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a5dab877bf124bfdf5a5eb703ca123027">  317</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a5dab877bf124bfdf5a5eb703ca123027">readButton</a>(uint8_t pin) {</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;      <span class="keywordflow">return</span> digitalRead(pin);</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    }</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160; </div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <span class="comment">// These methods provide access to various feature flags that control the</span></div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    <span class="comment">// functionality of the AceButton.</span></div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160; </div>
<div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#aeaa36505747dbd23bbd3a77e228820c9">  325</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="classace__button_1_1ButtonConfig.html#aeaa36505747dbd23bbd3a77e228820c9">isFeature</a>(<a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> features)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;      <span class="keywordflow">return</span> mFeatureFlags &amp; features;</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    }</div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160; </div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#adf3a103f188bb8e669c77ab852553e9a">  330</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#adf3a103f188bb8e669c77ab852553e9a">setFeature</a>(<a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> features) {</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;      mFeatureFlags |= features;</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    }</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160; </div>
<div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a30a6c6c13148081da4746e50eae21873">  335</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a30a6c6c13148081da4746e50eae21873">clearFeature</a>(<a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> features) {</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;      mFeatureFlags &amp;= ~features;</div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    }</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160; </div>
<div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#af947cc369000a9c3619ac16b417db8b7">  344</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#af947cc369000a9c3619ac16b417db8b7">resetFeatures</a>() {</div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;      <span class="comment">// NOTE: If any additional kInternalFeatureXxx flag is added, it must be</span></div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;      <span class="comment">// added here like this:</span></div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;      <span class="comment">// mFeatureFlags &amp;= (kInternalFeatureIEventHandler | kInternalFeatureXxx)</span></div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;      mFeatureFlags &amp;= <a class="code" href="classace__button_1_1ButtonConfig.html#ac5a27fc7c6397ff6c5edc307988506a4">kInternalFeatureIEventHandler</a>;</div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    }</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160; </div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;    <span class="comment">// EventHandler</span></div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160; </div>
<div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a06b1f78f5f1f03bc9af51af3345cc22c">  362</a></span>&#160;    <a class="code" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">EventHandler</a> <a class="code" href="classace__button_1_1ButtonConfig.html#a06b1f78f5f1f03bc9af51af3345cc22c">getEventHandler</a>() const ACE_BUTTON_DEPRECATED {</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;      <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">EventHandler</a><span class="keyword">&gt;</span>(mEventHandler);</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    }</div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160; </div>
<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#abb346713a5bd136a39d5e6fb16892996">  370</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#abb346713a5bd136a39d5e6fb16892996">dispatchEvent</a>(<a class="code" href="classace__button_1_1AceButton.html">AceButton</a>* button, uint8_t eventType,</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;        uint8_t buttonState)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160; </div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;      <span class="keywordflow">if</span> (! mEventHandler) <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160; </div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classace__button_1_1ButtonConfig.html#aeaa36505747dbd23bbd3a77e228820c9">isFeature</a>(<a class="code" href="classace__button_1_1ButtonConfig.html#ac5a27fc7c6397ff6c5edc307988506a4">kInternalFeatureIEventHandler</a>)) {</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;        <a class="code" href="classace__button_1_1IEventHandler.html">IEventHandler</a>* eventHandler =</div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;            <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="classace__button_1_1IEventHandler.html">IEventHandler</a>*<span class="keyword">&gt;</span>(mEventHandler);</div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;        eventHandler-&gt;<a class="code" href="classace__button_1_1IEventHandler.html#ab63192ee17b393582e9f6e8b8b15a5c8">handleEvent</a>(button, eventType, buttonState);</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;      } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;        <a class="code" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">EventHandler</a> eventHandler =</div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;            <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">EventHandler</a><span class="keyword">&gt;</span>(mEventHandler);</div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;        eventHandler(button, eventType, buttonState);</div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;      }</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;    }</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160; </div>
<div class="line"><a name="l00390"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#af916ea5ae0194afeac3a6fd6e25a13d1">  390</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#af916ea5ae0194afeac3a6fd6e25a13d1">setEventHandler</a>(<a class="code" href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">EventHandler</a> eventHandler) {</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;      mEventHandler = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">void</span>*<span class="keyword">&gt;</span>(eventHandler);</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;      <a class="code" href="classace__button_1_1ButtonConfig.html#a30a6c6c13148081da4746e50eae21873">clearFeature</a>(<a class="code" href="classace__button_1_1ButtonConfig.html#ac5a27fc7c6397ff6c5edc307988506a4">kInternalFeatureIEventHandler</a>);</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    }</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160; </div>
<div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a6fda9545052a13d64b383d11ceea5806">  399</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classace__button_1_1ButtonConfig.html#a6fda9545052a13d64b383d11ceea5806">setIEventHandler</a>(<a class="code" href="classace__button_1_1IEventHandler.html">IEventHandler</a>* eventHandler) {</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;      mEventHandler = eventHandler;</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;      <a class="code" href="classace__button_1_1ButtonConfig.html#adf3a103f188bb8e669c77ab852553e9a">setFeature</a>(<a class="code" href="classace__button_1_1ButtonConfig.html#ac5a27fc7c6397ff6c5edc307988506a4">kInternalFeatureIEventHandler</a>);</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;    }</div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160; </div>
<div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classace__button_1_1ButtonConfig.html#a585353712d2c76d91c10e67102cb614d">  408</a></span>&#160;    <span class="keyword">static</span> <a class="code" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a>* <a class="code" href="classace__button_1_1ButtonConfig.html#a585353712d2c76d91c10e67102cb614d">getSystemButtonConfig</a>() {</div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;      <span class="keywordflow">return</span> &amp;sSystemButtonConfig;</div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;    }</div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160; </div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;  <span class="keyword">private</span>:</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;    <span class="keyword">static</span> <a class="code" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a> sSystemButtonConfig;</div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160; </div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <span class="comment">// Disable copy-constructor and assignment operator</span></div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    <a class="code" href="classace__button_1_1ButtonConfig.html#aa81d236e4030f4abc48eb01ae9ade202">ButtonConfig</a>(<span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;    <a class="code" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classace__button_1_1ButtonConfig.html">ButtonConfig</a>&amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160; </div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;    <span class="keywordtype">void</span>* mEventHandler = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160; </div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    <a class="code" href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">FeatureFlagType</a> mFeatureFlags = 0;</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160; </div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;    uint16_t mDebounceDelay = <a class="code" href="classace__button_1_1ButtonConfig.html#a8fbe63588107a1375d05911d27df3ad8">kDebounceDelay</a>;</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;    uint16_t mClickDelay = <a class="code" href="classace__button_1_1ButtonConfig.html#a5691e38564dae63592d22abf74fb15f3">kClickDelay</a>;</div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;    uint16_t mDoubleClickDelay = <a class="code" href="classace__button_1_1ButtonConfig.html#af0a0d503f3396acef6a84aca4390fd6a">kDoubleClickDelay</a>;</div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;    uint16_t mLongPressDelay = <a class="code" href="classace__button_1_1ButtonConfig.html#a60bf588a2c067a561887eadf18cedccd">kLongPressDelay</a>;</div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;    uint16_t mRepeatPressDelay = <a class="code" href="classace__button_1_1ButtonConfig.html#a3d20bc5800532085fd046fc64b80ae9f">kRepeatPressDelay</a>;</div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;    uint16_t mRepeatPressInterval = <a class="code" href="classace__button_1_1ButtonConfig.html#a218c1aa09b45ea2fe6884e3af3a18310">kRepeatPressInterval</a>;</div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    uint16_t mHeartBeatInterval = <a class="code" href="classace__button_1_1ButtonConfig.html#a918276f7ac8cf6db59a7013c1242e848">kHeartBeatInterval</a>;</div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;};</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160; </div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;}</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclassace__button_1_1AceButton_html"><div class="ttname"><a href="classace__button_1_1AceButton.html">ace_button::AceButton</a></div><div class="ttdoc">An Adjustable Compact Event-driven (ACE) Button library that debounces and dispatches button events t...</div><div class="ttdef"><b>Definition:</b> <a href="ace__button_2AceButton_8h_source.html#l00054">AceButton.h:54</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html">ace_button::ButtonConfig</a></div><div class="ttdoc">Class that defines the timing parameters and event handler of an AceButton or a group of AceButton in...</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00066">ButtonConfig.h:66</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a0098549db5df3c730f64f4235845a5a5"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a0098549db5df3c730f64f4235845a5a5">ace_button::ButtonConfig::getDoubleClickDelay</a></div><div class="ttdeci">uint16_t getDoubleClickDelay() const</div><div class="ttdoc">Milliseconds between the first and second click to register as a double-click.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00231">ButtonConfig.h:231</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a06b1f78f5f1f03bc9af51af3345cc22c"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a06b1f78f5f1f03bc9af51af3345cc22c">ace_button::ButtonConfig::getEventHandler</a></div><div class="ttdeci">EventHandler getEventHandler() const ACE_BUTTON_DEPRECATED</div><div class="ttdoc">Return the eventHandler function pointer.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00362">ButtonConfig.h:362</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a0c21a9b859c82c78581b340f2de864d5"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a0c21a9b859c82c78581b340f2de864d5">ace_button::ButtonConfig::setHeartBeatInterval</a></div><div class="ttdeci">void setHeartBeatInterval(uint16_t heartBeatInterval)</div><div class="ttdoc">Set the heartBeatInterval milliseconds.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00291">ButtonConfig.h:291</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a15b8e90b1ffe01009a1d7dd18b5b6aae"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a15b8e90b1ffe01009a1d7dd18b5b6aae">ace_button::ButtonConfig::kFeatureSuppressAfterLongPress</a></div><div class="ttdeci">static const FeatureFlagType kFeatureSuppressAfterLongPress</div><div class="ttdoc">Flag to suppress kEventReleased after a kEventLongPressed.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00139">ButtonConfig.h:139</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a1c7c7bfc42738278330243dfc43f23eb"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a1c7c7bfc42738278330243dfc43f23eb">ace_button::ButtonConfig::FeatureFlagType</a></div><div class="ttdeci">uint16_t FeatureFlagType</div><div class="ttdoc">Type of the feature flag.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00110">ButtonConfig.h:110</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a218c1aa09b45ea2fe6884e3af3a18310"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a218c1aa09b45ea2fe6884e3af3a18310">ace_button::ButtonConfig::kRepeatPressInterval</a></div><div class="ttdeci">static const uint16_t kRepeatPressInterval</div><div class="ttdoc">Default milliseconds returned by getRepeatPressInterval().</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00098">ButtonConfig.h:98</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a2866cf111973f8b1bf4ae0e7df17b6dd"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a2866cf111973f8b1bf4ae0e7df17b6dd">ace_button::ButtonConfig::getDebounceDelay</a></div><div class="ttdeci">uint16_t getDebounceDelay() const</div><div class="ttdoc">Milliseconds to wait for debouncing.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00222">ButtonConfig.h:222</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a2a39fcc939e2dce12f2ddbf803747a6e"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a2a39fcc939e2dce12f2ddbf803747a6e">ace_button::ButtonConfig::getClickDelay</a></div><div class="ttdeci">uint16_t getClickDelay() const</div><div class="ttdoc">Milliseconds to wait for a possible click.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00225">ButtonConfig.h:225</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a30a6c6c13148081da4746e50eae21873"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a30a6c6c13148081da4746e50eae21873">ace_button::ButtonConfig::clearFeature</a></div><div class="ttdeci">void clearFeature(FeatureFlagType features)</div><div class="ttdoc">Disable the given features.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00335">ButtonConfig.h:335</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a367a809017e1d633a5cf6b117981d579"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a367a809017e1d633a5cf6b117981d579">ace_button::ButtonConfig::setDoubleClickDelay</a></div><div class="ttdeci">void setDoubleClickDelay(uint16_t doubleClickDelay)</div><div class="ttdoc">Set the doubleClickDelay milliseconds.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00271">ButtonConfig.h:271</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a3d20bc5800532085fd046fc64b80ae9f"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a3d20bc5800532085fd046fc64b80ae9f">ace_button::ButtonConfig::kRepeatPressDelay</a></div><div class="ttdeci">static const uint16_t kRepeatPressDelay</div><div class="ttdoc">Default milliseconds returned by getRepeatPressDelay().</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00095">ButtonConfig.h:95</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a3ded707bd12aaf7bbcb14e431ec77e15"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a3ded707bd12aaf7bbcb14e431ec77e15">ace_button::ButtonConfig::getLongPressDelay</a></div><div class="ttdeci">uint16_t getLongPressDelay() const</div><div class="ttdoc">Milliseconds for a long press event.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00236">ButtonConfig.h:236</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a440271e22d5e7e161cdcb3b73f092111"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a440271e22d5e7e161cdcb3b73f092111">ace_button::ButtonConfig::getClock</a></div><div class="ttdeci">virtual unsigned long getClock()</div><div class="ttdoc">Return the milliseconds of the internal clock.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00307">ButtonConfig.h:307</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a4d175560047a4ca245186fb26fa413f2"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a4d175560047a4ca245186fb26fa413f2">ace_button::ButtonConfig::kFeatureLongPress</a></div><div class="ttdeci">static const FeatureFlagType kFeatureLongPress</div><div class="ttdoc">Flag to activate the AceButton::kEventLongPress event.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00123">ButtonConfig.h:123</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a5691e38564dae63592d22abf74fb15f3"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a5691e38564dae63592d22abf74fb15f3">ace_button::ButtonConfig::kClickDelay</a></div><div class="ttdeci">static const uint16_t kClickDelay</div><div class="ttdoc">Default milliseconds returned by getClickDelay().</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00086">ButtonConfig.h:86</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a57327066d135bcc99c4a68b55fca162e"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a57327066d135bcc99c4a68b55fca162e">ace_button::ButtonConfig::kFeatureSuppressAfterClick</a></div><div class="ttdeci">static const FeatureFlagType kFeatureSuppressAfterClick</div><div class="ttdoc">Flag to suppress kEventReleased after a kEventClicked.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00129">ButtonConfig.h:129</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a585353712d2c76d91c10e67102cb614d"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a585353712d2c76d91c10e67102cb614d">ace_button::ButtonConfig::getSystemButtonConfig</a></div><div class="ttdeci">static ButtonConfig * getSystemButtonConfig()</div><div class="ttdoc">Return a pointer to the singleton instance of the ButtonConfig which is attached to all AceButton ins...</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00408">ButtonConfig.h:408</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a5c5d86932a98f71030422ef367b57a25"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a5c5d86932a98f71030422ef367b57a25">ace_button::ButtonConfig::getRepeatPressInterval</a></div><div class="ttdeci">uint16_t getRepeatPressInterval() const</div><div class="ttdoc">Milliseconds between two successive RepeatPressed events.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00251">ButtonConfig.h:251</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a5dab877bf124bfdf5a5eb703ca123027"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a5dab877bf124bfdf5a5eb703ca123027">ace_button::ButtonConfig::readButton</a></div><div class="ttdeci">virtual int readButton(uint8_t pin)</div><div class="ttdoc">Return the HIGH or LOW state of the button.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00317">ButtonConfig.h:317</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a60bf588a2c067a561887eadf18cedccd"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a60bf588a2c067a561887eadf18cedccd">ace_button::ButtonConfig::kLongPressDelay</a></div><div class="ttdeci">static const uint16_t kLongPressDelay</div><div class="ttdoc">Default milliseconds returned by getLongPressDelay().</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00092">ButtonConfig.h:92</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a638943c127dd60288a83e83260825d01"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a638943c127dd60288a83e83260825d01">ace_button::ButtonConfig::kFeatureDoubleClick</a></div><div class="ttdeci">static const FeatureFlagType kFeatureDoubleClick</div><div class="ttdoc">Flag to activate the AceButton::kEventDoubleClicked event.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00120">ButtonConfig.h:120</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a6b43b591ba53d360e787bf780af0abbc"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a6b43b591ba53d360e787bf780af0abbc">ace_button::ButtonConfig::kFeatureSuppressAfterRepeatPress</a></div><div class="ttdeci">static const FeatureFlagType kFeatureSuppressAfterRepeatPress</div><div class="ttdoc">Flag to suppress kEventReleased after a kEventRepeatPressed.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00142">ButtonConfig.h:142</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a6d9db3c7b221b474c3cfd8fca5f4ba1e"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a6d9db3c7b221b474c3cfd8fca5f4ba1e">ace_button::ButtonConfig::EventHandler</a></div><div class="ttdeci">void(* EventHandler)(AceButton *button, uint8_t eventType, uint8_t buttonState)</div><div class="ttdoc">The event handler signature.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00182">ButtonConfig.h:182</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a6fda9545052a13d64b383d11ceea5806"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a6fda9545052a13d64b383d11ceea5806">ace_button::ButtonConfig::setIEventHandler</a></div><div class="ttdeci">void setIEventHandler(IEventHandler *eventHandler)</div><div class="ttdoc">Install the IEventHandler object pointer.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00399">ButtonConfig.h:399</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a7642e16b2cc8dd0136312054b1da8f9e"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a7642e16b2cc8dd0136312054b1da8f9e">ace_button::ButtonConfig::kFeatureSuppressAfterDoubleClick</a></div><div class="ttdeci">static const FeatureFlagType kFeatureSuppressAfterDoubleClick</div><div class="ttdoc">Flag to suppress kEventReleased after a kEventDoubleClicked.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00136">ButtonConfig.h:136</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a7d90d39aeddacb5abc9d8741611d7c4a"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a7d90d39aeddacb5abc9d8741611d7c4a">ace_button::ButtonConfig::setLongPressDelay</a></div><div class="ttdeci">void setLongPressDelay(uint16_t longPressDelay)</div><div class="ttdoc">Set the longPressDelay milliseconds.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00276">ButtonConfig.h:276</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a80d621dbcf533c9bb91a111b8fec2c53"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a80d621dbcf533c9bb91a111b8fec2c53">ace_button::ButtonConfig::kFeatureSuppressClickBeforeDoubleClick</a></div><div class="ttdeci">static const FeatureFlagType kFeatureSuppressClickBeforeDoubleClick</div><div class="ttdoc">Flag to suppress kEventClicked before a kEventDoubleClicked.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00150">ButtonConfig.h:150</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a8fbe63588107a1375d05911d27df3ad8"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a8fbe63588107a1375d05911d27df3ad8">ace_button::ButtonConfig::kDebounceDelay</a></div><div class="ttdeci">static const uint16_t kDebounceDelay</div><div class="ttdoc">Default milliseconds returned by getDebounceDelay().</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00083">ButtonConfig.h:83</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a918276f7ac8cf6db59a7013c1242e848"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a918276f7ac8cf6db59a7013c1242e848">ace_button::ButtonConfig::kHeartBeatInterval</a></div><div class="ttdeci">static const uint16_t kHeartBeatInterval</div><div class="ttdoc">Default milliseconds returned by getHeartBeatInterval().</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00101">ButtonConfig.h:101</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_a9860d2c8a6ab33d40ea126b02d168cab"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#a9860d2c8a6ab33d40ea126b02d168cab">ace_button::ButtonConfig::setDebounceDelay</a></div><div class="ttdeci">void setDebounceDelay(uint16_t debounceDelay)</div><div class="ttdoc">Set the debounceDelay milliseconds.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00261">ButtonConfig.h:261</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_aa118a96cb344ada0230eb441f9729d5e"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#aa118a96cb344ada0230eb441f9729d5e">ace_button::ButtonConfig::~ButtonConfig</a></div><div class="ttdeci">virtual ~ButtonConfig()=default</div><div class="ttdoc">If the ButtonConfig is created and deleted on the heap, a virtual destructor is technically required ...</div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_aa1b1217e0042512fc8d9b6544536aed3"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#aa1b1217e0042512fc8d9b6544536aed3">ace_button::ButtonConfig::setRepeatPressInterval</a></div><div class="ttdeci">void setRepeatPressInterval(uint16_t repeatPressInterval)</div><div class="ttdoc">Set the repeatPressInterval milliseconds.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00286">ButtonConfig.h:286</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_aa81d236e4030f4abc48eb01ae9ade202"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#aa81d236e4030f4abc48eb01ae9ade202">ace_button::ButtonConfig::ButtonConfig</a></div><div class="ttdeci">ButtonConfig()=default</div><div class="ttdoc">Constructor.</div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_abb346713a5bd136a39d5e6fb16892996"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#abb346713a5bd136a39d5e6fb16892996">ace_button::ButtonConfig::dispatchEvent</a></div><div class="ttdeci">void dispatchEvent(AceButton *button, uint8_t eventType, uint8_t buttonState) const</div><div class="ttdoc">Dispatch the event to the handler.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00370">ButtonConfig.h:370</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_abfd736234ae852f22894c7aceb4e534e"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#abfd736234ae852f22894c7aceb4e534e">ace_button::ButtonConfig::kFeatureSuppressAll</a></div><div class="ttdeci">static const FeatureFlagType kFeatureSuppressAll</div><div class="ttdoc">Convenience flag to suppress all suppressions.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00168">ButtonConfig.h:168</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_ac5a27fc7c6397ff6c5edc307988506a4"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#ac5a27fc7c6397ff6c5edc307988506a4">ace_button::ButtonConfig::kInternalFeatureIEventHandler</a></div><div class="ttdeci">static const FeatureFlagType kInternalFeatureIEventHandler</div><div class="ttdoc">Internal flag to indicate that mEventHandler is an IEventHandler object pointer instead of an EventHa...</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00159">ButtonConfig.h:159</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_ac662555100416c4843c6ee5156699c56"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#ac662555100416c4843c6ee5156699c56">ace_button::ButtonConfig::kFeatureClick</a></div><div class="ttdeci">static const FeatureFlagType kFeatureClick</div><div class="ttdoc">Flag to activate the AceButton::kEventClicked event.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00113">ButtonConfig.h:113</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_ac9b941ca87f0eeb899ed503481439c92"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#ac9b941ca87f0eeb899ed503481439c92">ace_button::ButtonConfig::kFeatureRepeatPress</a></div><div class="ttdeci">static const FeatureFlagType kFeatureRepeatPress</div><div class="ttdoc">Flag to activate the AceButton::kEventRepeatPressed event.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00126">ButtonConfig.h:126</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_adf3a103f188bb8e669c77ab852553e9a"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#adf3a103f188bb8e669c77ab852553e9a">ace_button::ButtonConfig::setFeature</a></div><div class="ttdeci">void setFeature(FeatureFlagType features)</div><div class="ttdoc">Enable the given features.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00330">ButtonConfig.h:330</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_aeaa36505747dbd23bbd3a77e228820c9"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#aeaa36505747dbd23bbd3a77e228820c9">ace_button::ButtonConfig::isFeature</a></div><div class="ttdeci">bool isFeature(FeatureFlagType features) const</div><div class="ttdoc">Check if the given features are enabled.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00325">ButtonConfig.h:325</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_aeca9329775d17a06433c9588fca28695"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#aeca9329775d17a06433c9588fca28695">ace_button::ButtonConfig::getRepeatPressDelay</a></div><div class="ttdeci">uint16_t getRepeatPressDelay() const</div><div class="ttdoc">Milliseconds that a button needs to be Pressed down before the start of the sequence of RepeatPressed...</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00246">ButtonConfig.h:246</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_aef65e12128997c46bc2754a988b98f14"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#aef65e12128997c46bc2754a988b98f14">ace_button::ButtonConfig::setClickDelay</a></div><div class="ttdeci">void setClickDelay(uint16_t clickDelay)</div><div class="ttdoc">Set the clickDelay milliseconds.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00266">ButtonConfig.h:266</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_af0a0d503f3396acef6a84aca4390fd6a"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#af0a0d503f3396acef6a84aca4390fd6a">ace_button::ButtonConfig::kDoubleClickDelay</a></div><div class="ttdeci">static const uint16_t kDoubleClickDelay</div><div class="ttdoc">Default milliseconds returned by getDoubleClickDelay().</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00089">ButtonConfig.h:89</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_af54fa7ecae6078d9d014b7651acbddbe"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#af54fa7ecae6078d9d014b7651acbddbe">ace_button::ButtonConfig::kFeatureHeartBeat</a></div><div class="ttdeci">static const FeatureFlagType kFeatureHeartBeat</div><div class="ttdoc">Flag to enable periodic kEventHeartBeat.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00153">ButtonConfig.h:153</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_af813c969eddd884e9fa83b334a59a0a5"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#af813c969eddd884e9fa83b334a59a0a5">ace_button::ButtonConfig::setRepeatPressDelay</a></div><div class="ttdeci">void setRepeatPressDelay(uint16_t repeatPressDelay)</div><div class="ttdoc">Set the repeatPressDelay milliseconds.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00281">ButtonConfig.h:281</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_af916ea5ae0194afeac3a6fd6e25a13d1"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#af916ea5ae0194afeac3a6fd6e25a13d1">ace_button::ButtonConfig::setEventHandler</a></div><div class="ttdeci">void setEventHandler(EventHandler eventHandler)</div><div class="ttdoc">Install the EventHandler function pointer.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00390">ButtonConfig.h:390</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_af947cc369000a9c3619ac16b417db8b7"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#af947cc369000a9c3619ac16b417db8b7">ace_button::ButtonConfig::resetFeatures</a></div><div class="ttdeci">void resetFeatures()</div><div class="ttdoc">Disable all (externally visible) features.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00344">ButtonConfig.h:344</a></div></div>
<div class="ttc" id="aclassace__button_1_1ButtonConfig_html_afd90e97a98826ca8e47933aecb8b2d08"><div class="ttname"><a href="classace__button_1_1ButtonConfig.html#afd90e97a98826ca8e47933aecb8b2d08">ace_button::ButtonConfig::getHeartBeatInterval</a></div><div class="ttdeci">uint16_t getHeartBeatInterval() const</div><div class="ttdoc">Milliseconds between two successive HeartBeat events.</div><div class="ttdef"><b>Definition:</b> <a href="ButtonConfig_8h_source.html#l00256">ButtonConfig.h:256</a></div></div>
<div class="ttc" id="aclassace__button_1_1IEventHandler_html"><div class="ttname"><a href="classace__button_1_1IEventHandler.html">ace_button::IEventHandler</a></div><div class="ttdoc">Interface of the class that will handle the button event.</div><div class="ttdef"><b>Definition:</b> <a href="IEventHandler_8h_source.html#l00039">IEventHandler.h:39</a></div></div>
<div class="ttc" id="aclassace__button_1_1IEventHandler_html_ab63192ee17b393582e9f6e8b8b15a5c8"><div class="ttname"><a href="classace__button_1_1IEventHandler.html#ab63192ee17b393582e9f6e8b8b15a5c8">ace_button::IEventHandler::handleEvent</a></div><div class="ttdeci">virtual void handleEvent(AceButton *button, uint8_t eventType, uint8_t buttonState)=0</div><div class="ttdoc">Handle the button event.</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>
